feat(agent): bound, isolate, and account for every drive - #31
Merged
Conversation
…onomous-qa-enhancements] Nothing in the pipeline bounded wall-clock time or spend, and one failure could destroy unrelated work: - time-box every external await: model calls (with a single backed-off retry on transient failure), runCommand (timeout + maxBuffer, mirrored in the emitted spec's inline helper), the Playwright invocation, the rac graph export, and the git diff - a runner exception during the fidelity gate is a failed attempt with its reason on FidelityVerdict.errors, never an abort - a scoped capability's throw becomes its own error entry; sibling results are no longer discarded by a rejected pool - observation text/ARIA blocks are capped per turn with an explicit truncation marker - adapters surface provider token usage, the drive accumulates it into DriveResult.tokens (shown in the QA summary), and --verbose streams a per-turn audit trail to stderr Signed-off-by: Tom Ballard <tom@armytage.co>
…roadmap:autonomous-qa-enhancements] Pins that a stalled model call errors at its cap, a transient failure is retried once (and a dead provider reports both errors), runner exceptions count as failed fidelity attempts with reasons, a throwing capability never discards scoped siblings, oversized observations are clipped with a marker, both adapters map provider usage, onStep emits the per-turn audit record, and a hung command errors within its cap. Signed-off-by: Tom Ballard <tom@armytage.co>
…dmap:autonomous-qa-enhancements] Implements lore-proofkeeper/requirements/req-drive-resilience.md. Adds the requirement and design artifacts, the roadmap initiative, and the changelog entry. Signed-off-by: Tom Ballard <tom@armytage.co>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Batch 3 of the technical-review fixes. Stacked on #30 (→ #29) — merge in order; GitHub retargets automatically.
Nothing in the pipeline bounded wall-clock time or spend, and one failure could destroy unrelated work: a stalled model/shell/Playwright/rac process hung forever, one transient model 500 aborted a capability, a throwing drive rejected the scoped pool and discarded every sibling's completed result, and a runner exception aborted the fidelity gate.
What
modelTimeoutMs) plus one backed-off retry on transient failure — the final error names both failures.runCommandgetstimeout/maxBuffer(2 min / 16 MB), mirrored in the emitted spec's inline helper so record and replay stay in agreement. The Playwright invocation (10 min, configurable), the rac graph export (2 min), and the git diff (1 min) getexecFiletimeouts.FidelityVerdict.errors— "the test failed" and "the run broke" are now distinguishable, and the gate always completes its N attempts. The scoped pool wraps each capability's wholerunQain try/catch, filling the existingScopedCapabilityResult.errorseam — siblings' results survive.[truncated N chars]marker, so a content-heavy page can't grow the transcript quadratically.ModelResponse.usage), the drive accumulates it intoDriveResult.tokens(shown in the QA summary), and--verbosestreams a per-turn audit trail — tool calls, errors, model latency — to stderr as it happens.All additive: no verdict semantics change, every existing caller compiles unchanged.
Corpus (dogfood)
req-drive-resilience+design-drive-resilience, roadmap initiative,## Verified By→ the four pinning test files. Gates green:rac validate(33/33), relationships 48/48 (0 issues), self-coverage 16/16.Verification
PROOFKEEPER_E2E=1): drive, qa, terminal, and http integration suites pass.npm run typecheck/buildgreen.